今天要從Layout開始瞭解,因為我要把它給!換!掉!目標進度是做完頁面跳轉
那麼下面是今天的筆記和紀錄。
首先,之前看到的頁面是預設的主模板。
設定主模板的檔案是在Views目錄底下的ViewStart.cshtml,Layout的值就是主模板頁面,所以要換成其他View做為主板只需修改這邊的設定即可(將""內的Layout換掉)。
@{
Layout = "_Layout";
}
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
好的,那我現在把我從網路上找到的網頁模板改一改套上去。
模板來源:https://templated.co/typify
ViewData [“名稱”] = “字串”
ViewData [“名稱”] = 數值
此方法你可以在頁面中留個位子,之後再填上想填的內容。
ViewBag.Key = 值
此方法和上面的ViewData一樣,只存在於當下的請求, 導頁後就被清空,兩者都是將後端資料在前端顯示的方法之一,和ViewData最大的不同在於ViewBag能產生"動態屬性"。
接著,來看看MVC架構中controller怎麼切換views的吧,以下是我在網路上看到的三種基本頁面跳轉方法。
public ActionResult NAME()
{
return View();//返回NAME VIEWS
return View("Create");//返回Create VIEWS
}
public ActionResult NAME (string a, int b)
{
return Redirect("NAME ");//參數可為空的跳轉方法
return Redirect("NAME?b=6");//參數若必須傳遞數值,不可為空,可使用此方法
}
public ActionResult NAME (string a, int b)
{
return RedirectToAction("ActionName ", " ControllerName ");
}
接下來紀錄一下我今天的實作
首先來到我的首頁index.cshtml
@{
ViewData["Title"] = "Home Page";
}
<ul class="actions">
<li><a class="button special" asp-area="" asp-controller="shome" asp-action="Register">Register</a></li>
<li><a class="button special" asp-area="" asp-controller="shome" asp-action="Login">Login</a></li>
</ul>
我建了兩個button,對應到day2中我設計的註冊&登入,然後就像前面提到的,@RenderBody()會將我們的程式塞進去,所以我的畫面就變成
接下來試試頁面跳轉,把asp-controller和asp-action填上去
asp-controller="shome" asp-action="Register"
接著來處理controller跟views
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using MvcMovie.Models;
namespace MvcMovie.Controllers
{
public class shomeController : Controller
{
public ActionResult Register()
{
return View();
}
}
}
上面就是我的controller內容,跳頁的方式上面介紹了三種,我選擇對我來說最簡單的方式,直接return view()。
再來,我在views目錄下建立一個對應controller的目錄(目錄名跟controller的名字一樣),然後建立register.cshtml和login.cshtml頁面。
下面是我的register.cshtml,form這裡暫時先不管他,之後再來學怎麼將form送出並存入資料庫。
@{
ViewData["Title"] = "Register Page";
}
<ul class="actions">
<div>
<form asp-action="" method="post">
<div class="row">
ID:
<div class="col"><input name="UID" class="form-control" style="color:blue;"/></div>
PWD:
<div class="col"><input name="PWD" class="form-control" style="color:blue;"/></div>
<div class="col">
<li><input value="Send" type="submit"></li>
</div>
</div>
</form>
</div>
</ul>
今天的成果
click一下register button
DAY3心得:要學的東西真的很多,GOOGLE真的是個好老師,我都邊查遍做,觀念上還有很多不太清楚跟明白的地方,在實作的過程中,希望可以越來越清楚,最後,CSS也好難啊,版面的美化我放到後面處理,希望這幾天能速速把功能完成。